package com.property.cleaning.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 保洁人员实体类
 * 
 * @author Property Cleaning System
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("cleaners")
@ApiModel(value="Cleaner对象", description="保洁人员表")
public class Cleaner {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "保洁员ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "关联用户ID")
    @TableField("user_id")
    private Long userId;

    @ApiModelProperty(value = "员工编号")
    @TableField("employee_no")
    private String employeeNo;

    @ApiModelProperty(value = "技能等级：1初级 2中级 3高级")
    @TableField("skill_level")
    private Integer skillLevel;

    @ApiModelProperty(value = "工作经验(年)")
    @TableField("work_experience")
    private Integer workExperience;

    @ApiModelProperty(value = "专业技能")
    @TableField("specialties")
    private String specialties;

    @ApiModelProperty(value = "班次：1早班 2中班 3晚班")
    @TableField("work_shift")
    private Integer workShift;

    @ApiModelProperty(value = "最大工作量(小时)")
    @TableField("max_workload")
    private Integer maxWorkload;

    @ApiModelProperty(value = "当前状态：1在岗 2请假 3离职")
    @TableField("current_status")
    private Integer currentStatus;

    @ApiModelProperty(value = "入职日期")
    @TableField("hire_date")
    private LocalDate hireDate;

    @ApiModelProperty(value = "基本工资")
    @TableField("salary")
    private BigDecimal salary;

    @ApiModelProperty(value = "紧急联系人")
    @TableField("emergency_contact")
    private String emergencyContact;

    @ApiModelProperty(value = "紧急联系电话")
    @TableField("emergency_phone")
    private String emergencyPhone;

    @ApiModelProperty(value = "创建时间")
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    @ApiModelProperty(value = "更新时间")
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    @TableField(exist = false)
    private String realName;

    @TableField(exist = false)
    private String username;

    @TableField(exist = false)
    private String phone;
}